home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Low Level Languages / Rm Cobol V2.2 / FILTST.CBL < prev    next >
Encoding:
Text File  |  1985-09-03  |  6.0 KB  |  219 lines

  1.     IDENTIFICATION DIVISION.
  2.     PROGRAM-ID.  FILTST.
  3.       * SCCS information:
  4.       *@(#) FILTST  ver. 1.1 last update 85/03/29 12:18:35
  5.       *@(#) This source obtained from the s file on 85/03/29 at 12:19:23
  6.       *            (FILE SYSTEM TEST)
  7.     ENVIRONMENT DIVISION.
  8.     CONFIGURATION SECTION.
  9.     SOURCE-COMPUTER.  RMCOBOL.
  10.     OBJECT-COMPUTER.  RMCOBOL.
  11.       *
  12.     INPUT-OUTPUT SECTION.
  13.     FILE-CONTROL.
  14.         SELECT SEQ-FILE ASSIGN TO INPUT-OUTPUT, "SEQFL".
  15.         SELECT REL-FILE ASSIGN TO RANDOM, "RELFL"
  16.             ORGANIZATION IS RELATIVE,
  17.             ACCESS MODE IS RANDOM,
  18.             RELATIVE KEY IS REL-KEY.
  19.         SELECT INX-FILE ASSIGN TO RANDOM, "INXFL"
  20.             ORGANIZATION IS INDEXED,
  21.             ACCESS MODE IS DYNAMIC,
  22.             RECORD KEY IS INX-KEY,
  23.                 ALTERNATE RECORD KEY IS ALT-KEY.
  24.       *
  25.     DATA DIVISION.
  26.     FILE SECTION.
  27.     FD  SEQ-FILE
  28.             BLOCK CONTAINS 8 RECORDS
  29.             LABEL RECORDS ARE STANDARD
  30.             DATA RECORD IS SEQ-RECORD.
  31.     01  SEQ-RECORD            PIC X(30).
  32.     FD  REL-FILE
  33.             BLOCK CONTAINS 8 RECORDS
  34.             LABEL RECORDS ARE STANDARD
  35.             DATA RECORD IS REL-RECORD.
  36.     01  REL-RECORD            PIC X(30).
  37.     FD  INX-FILE
  38.             BLOCK CONTAINS 8 RECORDS
  39.             LABEL RECORDS ARE STANDARD
  40.             DATA RECORD IS INX-RECORD.
  41.     01  INX-RECORD.
  42.         03    INX-KEY        PIC X(3).
  43.         03    FILLER        PIC X(6).
  44.         03    ALT-KEY        PIC X(3).
  45.         03    INX-DAT        PIC X(3).
  46.         03    FILLER        PIC X(15).
  47.       *
  48.     WORKING-STORAGE SECTION.
  49.     01    TITLE.
  50.         03    FILLER        PIC    X(51) VALUE
  51.         "FILTST: RM/COBOL Verify file I/O operations    ver.".
  52.         03    TITLE-DATE    PIC    X(10).
  53.         03    TITLE-TIME    PIC    X(8).
  54.     01    VERSION-INFO.
  55.         03    FILLER        PIC    X(15) VALUE "@ #( ) (@)#@(#)".
  56.         03    PROGRAM-NAME    PIC    X(10) VALUE "FILTST".
  57.         03    FILLER        PIC    X(6) VALUE " ver. ".
  58.         03    VERSION        PIC    X(4)    VALUE "1.1".
  59.         03    VER-DATE    PIC    X(10) VALUE " 85/03/29 ".
  60.         03    VER-TIME    PIC    X(8)    VALUE "12:18:35".
  61.         03    FILLER        PIC    X    VALUE ">".
  62.     77    REL-KEY            PIC 999.
  63.     77    KEY-NUM            PIC 999.
  64.     77    RETURN-KEY        PIC X.
  65.     77    FUNCTION-NUMBER        PIC 9.
  66.     77    COUNTER            PIC 999.
  67.     77    ALT-COUNT        PIC 999.
  68.       /
  69.       *
  70.     PROCEDURE DIVISION.
  71.     SECTION-1 SECTION 1.
  72.     DISPLAY-MENU.
  73.         MOVE VER-DATE TO TITLE-DATE MOVE VER-TIME TO TITLE-TIME.
  74.         DISPLAY TITLE LINE 1 ERASE.
  75.         DISPLAY "1. SEQUENTIAL FILE TEST" LINE 4 POSITION 10.
  76.         DISPLAY "2. RELATIVE FILE TEST" POSITION 10.
  77.         DISPLAY "3. INDEXED FILE TEST" POSITION 10.
  78.         DISPLAY "4. EXIT PROGRAM" POSITION 10.
  79.     ACCEPT-FUNCTION-NUMBER.
  80.         DISPLAY "ENTER FUNCTION NUMBER    " LINE 16 POSITION 40.
  81.         ACCEPT FUNCTION-NUMBER LINE 16 POSITION 66 TAB.
  82.         DISPLAY "                           " LINE 16 POSITION 40.
  83.         GO TO PARA-3, PARA-2, PARA-1, EXIT-PARA
  84.             DEPENDING ON FUNCTION-NUMBER.
  85.         GO TO ACCEPT-FUNCTION-NUMBER.
  86.     DISPLAY-MENU-LOOP.
  87.         DISPLAY "TYPE ANY KEY TO CONTINUE"
  88.             LINE 22 POSITION 40.
  89.         ACCEPT RETURN-KEY POSITION 0.
  90.         GO TO DISPLAY-MENU.
  91.     RESET-COUNTER.
  92.         MOVE ZERO TO COUNTER.
  93.       /
  94.     SECTION-2 SECTION 2.
  95.     WRITE-INX-RECORD.
  96.         ADD 1 TO COUNTER.
  97.         COMPUTE ALT-COUNT = 101 - COUNTER.
  98.         MOVE COUNTER TO INX-DAT.
  99.         MOVE COUNTER TO INX-KEY.
  100.         MOVE ALT-COUNT TO ALT-KEY.
  101.         DISPLAY "WRITING BY PRIME KEY WITH ALTERNATE "
  102.             LINE 11 POSITION 10.
  103.         DISPLAY COUNTER POSITION 0.
  104.         WRITE INX-RECORD.
  105.     READ-BY-INX-KEY.
  106.         ADD 1 TO KEY-NUM.
  107.         MOVE KEY-NUM TO INX-KEY.
  108.         DISPLAY "READING BY PRIME KEY "
  109.             LINE 12 POSITION 10.
  110.         DISPLAY KEY-NUM POSITION 0.
  111.         READ INX-FILE RECORD
  112.             KEY IS INX-KEY
  113.             INVALID KEY ADD 1 TO COUNTER.
  114.         IF INX-DAT NOT = KEY-NUM ADD 1 TO COUNTER.
  115.     READ-BY-ALT-KEY.
  116.         MOVE KEY-NUM TO ALT-KEY.
  117.         READ INX-FILE RECORD
  118.             KEY IS ALT-KEY
  119.             INVALID KEY ADD 1 TO COUNTER.
  120.         COMPUTE ALT-COUNT = 101 - KEY-NUM.
  121.         DISPLAY "READING BY ALTERNATE KEY "
  122.             LINE 13 POSITION 10.
  123.         DISPLAY ALT-COUNT POSITION 0.
  124.         IF INX-DAT NOT = ALT-COUNT ADD 1 TO COUNTER.
  125.         SUBTRACT 1 FROM KEY-NUM.
  126.     WRITE-REL-RECORD.
  127.         MOVE SPACES TO REL-RECORD.
  128.         MOVE COUNTER TO REL-KEY.
  129.         MOVE COUNTER TO REL-RECORD.
  130.         DISPLAY "WRITING RELATIVE RECORD "
  131.             LINE 12 POSITION 10.
  132.         DISPLAY COUNTER POSITION 0.
  133.         WRITE REL-RECORD.
  134.         ADD 2 TO COUNTER.
  135.     READ-REL-RECORD.
  136.         ADD 1 TO KEY-NUM.
  137.         MOVE KEY-NUM TO REL-KEY.
  138.         DISPLAY "READING RELATIVE RECORD "
  139.             LINE 13 POSITION 10.
  140.         DISPLAY KEY-NUM POSITION 0.
  141.         READ REL-FILE RECORD 
  142.             INVALID KEY ADD 1 TO COUNTER.
  143.         IF REL-RECORD NOT = REL-KEY ADD 1 TO COUNTER.
  144.     WRITE-SEQ-RECORD.
  145.         MOVE "SEQ RECORD" TO SEQ-RECORD.
  146.         ADD 1 TO KEY-NUM.
  147.         DISPLAY "WRITING SEQUENTIAL RECORDS "
  148.             LINE 12 POSITION 10.
  149.         DISPLAY KEY-NUM POSITION 0.
  150.         WRITE SEQ-RECORD.
  151.     READ-SEQ-RECORD.
  152.         READ SEQ-FILE RECORD.
  153.         ADD 1 TO KEY-NUM.
  154.         DISPLAY "READING SEQUENTIAL RECORD "
  155.             LINE 13 POSITION 10.
  156.         DISPLAY KEY-NUM POSITION 0.
  157.         IF SEQ-RECORD NOT = "SEQ RECORD"
  158.             ADD 1 TO COUNTER.
  159.       /
  160.     SECTION-51 SECTION 51.
  161.     PARA-1.
  162.         PERFORM RESET-COUNTER.
  163.         OPEN OUTPUT INX-FILE.
  164.         PERFORM WRITE-INX-RECORD 100 TIMES.
  165.         CLOSE INX-FILE.
  166.         OPEN INPUT INX-FILE.
  167.         PERFORM RESET-COUNTER.
  168.         MOVE 0 TO KEY-NUM.
  169.         PERFORM READ-BY-INX-KEY 100 TIMES.
  170.         PERFORM READ-BY-ALT-KEY 100 TIMES.
  171.         CLOSE INX-FILE.
  172.         IF COUNTER = 0
  173.             DISPLAY "PASSED" LINE 14 POSITION 10
  174.         ELSE
  175.             DISPLAY "FAILED" LINE 14 POSITION 10.
  176.         GO TO DISPLAY-MENU-LOOP.
  177.       *
  178.     SECTION-52 SECTION 52.
  179.     PARA-2.
  180.         OPEN OUTPUT REL-FILE.
  181.         MOVE 1 TO COUNTER.
  182.         PERFORM WRITE-REL-RECORD 50 TIMES.
  183.         MOVE 2 TO COUNTER.
  184.         PERFORM WRITE-REL-RECORD 50 TIMES.
  185.         PERFORM RESET-COUNTER.
  186.         CLOSE REL-FILE.
  187.         OPEN INPUT REL-FILE.
  188.         MOVE 0 TO KEY-NUM.
  189.         PERFORM READ-REL-RECORD 100 TIMES.
  190.         CLOSE REL-FILE.
  191.         IF COUNTER = 0
  192.             DISPLAY "PASSED" LINE 14 POSITION 10
  193.         ELSE
  194.             DISPLAY "FAILED" LINE 14 POSITION 10.
  195.         GO TO DISPLAY-MENU-LOOP.
  196.       /
  197.       *
  198.     SECTION-53 SECTION 53.
  199.     PARA-3.
  200.         OPEN OUTPUT SEQ-FILE.
  201.         MOVE 0 TO KEY-NUM.
  202.         PERFORM WRITE-SEQ-RECORD 100 TIMES.
  203.         PERFORM RESET-COUNTER.
  204.         CLOSE SEQ-FILE.
  205.         OPEN INPUT SEQ-FILE.
  206.         MOVE 0 TO KEY-NUM.
  207.         PERFORM READ-SEQ-RECORD 100 TIMES.
  208.         CLOSE SEQ-FILE.
  209.         IF COUNTER = 0
  210.             DISPLAY "PASSED" LINE 14 POSITION 10
  211.         ELSE
  212.             DISPLAY "FAILED" LINE 14 POSITION 10.
  213.         GO TO DISPLAY-MENU-LOOP.
  214.       *
  215.     EXIT-PARA.
  216.         EXIT PROGRAM.
  217.       *
  218.     END PROGRAM.
  219.